import { defineConfig, loadEnv } from "vite";
import type { ConfigEnv } from "vite";
import { fileURLToPath, URL } from "node:url";
import vue from "@vitejs/plugin-vue";
import path from "path";
import WindiCSS from "vite-plugin-windicss";
const viteConfig = defineConfig((mode: ConfigEnv) => {
  // mode 介绍
  // 这里mode指的是 development-开发环境  还是 production 生产环境
  // 当执行npm run build 会执行 不同的.env.下的环境变量（env.development 或者 env.production）
  // 比如  "build:dev": "vite build --mode development"  指的是 执行env.development 文件中的环境变量
  console.log(mode, "111");
  const env = loadEnv(mode.mode, process.cwd());
  return {
    plugins: [vue(), WindiCSS()],
    resolve: {
      alias: {
        // 配置 @ 导入src
        "@": "/src",
      },
    },
    root: process.cwd(),
    // 开发服务器选项可查看  vite： https://cn.vitejs.dev/config/server-options.html
    server: {
      host: "0.0.0.0", //"0.0.0.0" 或 true 表示监听所有地址
      hmr: true, // 开启热更新
      open: true,
      port: 2012,
    },
    // build: {
    //   outDir: 'dist',
    //   sourcemap: false,
    //   minify: 'terser',
    //   chunkSizeWarningLimit: 1500,
    //   terserOptions: {
    //     compress: {
    //       drop_console: true,
    //       drop_debugger: false
    //     }
    //   },
    //   rollupOptions: {
    //     external: [
    //       '/web/jswebrtc.js' //  排除该模块  打包时不会有提示
    //     ],
    //     // output: {
    //     //   entryFileNames: `assets/[name].[hash].js`,
    //     //   chunkFileNames: `assets/[name].[hash].js`,
    //     //   assetFileNames: `assets/[name].[hash].[ext]`,
    //     //   compact: true,
    //     //   manualChunks: {
    //     //     vue: ['vue', 'vue-router', 'pinia'],
    //     //     lodash: ['lodash']
    //     //     // echarts: ['echarts']
    //     //   }
    //     // }
    //     output: {
    //       compact: true,
    //       entryFileNames: `views/[name].${new Date().getTime()}.js`,
    //       // assetFileNames: `assets/[name].${new Date().getTime()}.[ext]`,
    //       chunkFileNames: (chunkInfo) => {
    //         const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : []
    //         const fileName = facadeModuleId[facadeModuleId.length - 2] || '[name]'
    //         return `node_modules/${fileName}/[name].[hash].js`
    //       },
    //       manualChunks: {
    //         vue: ['vue', 'vue-router', 'pinia'],
    //         lodash: ['lodash']
    //         // echarts: ['echarts']
    //       }
    //       // manualChunks(id) {
    //       //   if (id.includes('node_modules')) {
    //       //     return id.toString().split('node_modules/')[1].split('/')[0].toString()
    //       //   }
    //       // }
    //     }
    //   }
    // },
    // 注意 Vite 默认是不加载 .env 文件的，需要手动配置
    define: {
      // 在配置中使用环境变量
      __APP_ENV__: JSON.stringify(env.APP_ENV),
    },
  };
});
export default viteConfig;
